Xilinx的Floating Point IP核使用(求对数、求指数) |
您所在的位置:网站首页 › cordic log › Xilinx的Floating Point IP核使用(求对数、求指数) |
一、floating point 变量
Floating Point 变量是用于表示实数的数据类型,允许包含小数,进行小数运算。浮点数用于处理器处理更高精度数值计算。浮点数的表示采用IEEE 754标准。 1 floating point 变量转换十进制规则以32bit的 浮点数为例: 第1位表示 符号位 第2-9位表示 指数位 第10-32位表示 小数部分位数 在线进制转换-IEE754浮点数16进制转换 这里给出可以进行换算验证的网址。 具体的换算办法,先说 正数:0 10000000 100_0000_0000_0000_0000_0000 (16进制:40400000) 符号位:0 指数位:10000000 小数位:100_0000_0000_0000_0000_0000 将指数减去偏置127, 10000000-0111_1111=1 2^1 =2 如果减去偏置后是n,那么获得2的n次方 小数:用二进制的计算规则 计算为 0.5。 所以结果是 : 2^1*1.5 =3 负数:1 100_0001_0010_0000_0000_0000_0000_0000(C1200000) 符号位:1 指数位:10000010 小数位:010_0000_0000_0000_0000_0000 将指数减去偏置127,10000010-0111_1111=3 2^3 =8 小数:用二进制的计算规则 计算为 0.25。 所以结果是 : 2^3*1.25 =10 符号位为1,所以结果为-10 二、Vivado Floating Point IP核配置这个IP核可意识先浮点数许多种运算,设置 本文以 Fixed to float(定点数转浮点数) Exponential(指数运算) Logarithm(对数运算)Float to fixed(浮点数转定点数) 为例,所有界面都除了选择 除了红色方框内的部分要设置,其余都保持默认,设置TUSER 标出数据的位置为方便大家观察对应位置数据是否计算正确。 三、Verilog代码 `timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2024/01/21 19:59:50 // Design Name: // Module Name: IP_TEST // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // // module IP_TEST( input wire sys_clk , input wire rst_n , input wire signed [31:0] data , input wire data_valid , output wire m_axis_result_tvalid, output wire [31:0] m_axis_result_tdata, output wire [9:0] m_axis_result_tuser ); //****************************************Fixed_to_float**********************************// wire Fixed_to_float_s_axis_a_tready; reg [9:0] Fixed_to_float_s_axis_a_tuser; always@(posedge sys_clk or negedge rst_n) if(!rst_n) Fixed_to_float_s_axis_a_tuser |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |